package com.coder4j.auth.entity;

import com.coder4j.enums.AuthResourceTypeEnum;
import com.coder4j.starter.mybatis.BaseEntity;
import com.coder4j.starter.mybatis.annotation.TableAttribute;
import lombok.Data;
import lombok.NonNull;

/**
 * 资源
 * @author keller
 * @date 2024-05-07 18:10:11
 */
@Data
@TableAttribute("auth_resource")
public class AuthResourceEntity extends BaseEntity{

    /**
     * 上级ID
     */
    private Long parentId;

    /**
     * 分组ID
     */
    private Long groupId;


    /**
     * 描述
     */
    private String description;

    /**
     * 资源名称
     */
    private String name;

    /**
     * 资源类型 Menu 菜单，Button 按钮
     */
    private String type;

    /**
     * 资源的前端路径，用以控制功能权限的显示和隐藏
     */
    private String webPath;

    /**
     * 图标名称
     */
    private String iconName;

    /**
     * 资源对应的API特征码，可以有多个，英文逗号分隔
     */
    private String apiSignatureCode;

    /**
     * 同级内排序号，序号越小越靠前
     */
    private Integer sort;

    public static AuthResourceEntity initMenu(@NonNull String name,@NonNull String path){
        AuthResourceEntity entity = new AuthResourceEntity();
        entity.setParentId(0L);
        entity.setType(AuthResourceTypeEnum.Menu.name());
        entity.setName(name);
        entity.setWebPath(path);
        return entity;
    }

    public static AuthResourceEntity initButton(@NonNull Long menuId, @NonNull String name,@NonNull String uniqueKey){
        AuthResourceEntity entity = new AuthResourceEntity();
        entity.setParentId(menuId);
        entity.setType(AuthResourceTypeEnum.Button.name());
        entity.setName(name);
        entity.setWebPath(uniqueKey);
        return entity;
    }


}
